read.ENVI(filename, headerfile=paste(filename, ".hdr", sep="")) write.ENVI (X, filename, interleave = c("bsq", "bil", "bip"))
read.ENVI
returns either a matrix or 3D array.
Function write.ENVI
does not return anything.writeBin
in R or fwrite
in C/C++.
samples
- number of columns
lines
- number of rows
bands
- number of bands (channels, planes)
data type
- following types are supported:
header offset
- number of bytes to skip before
raster data starts in binary file.
interleave
- Permutations of dimensions in binary data:
BSQ
- Band Sequential (X[col,row,band])
BIL
- Band Interleave by Line (X[col,band,row])
BIP
- Band Interleave by Pixel (X[band,col,row])
byte order
- the endian-ness of the saved data:
Fields samples
, lines
, bands
, data type
are
required, while header offset
, interleave
, byte order
are
optional. All of them are in form of integers except interleave
which
is a string.
This generic format allows reading of many raw file formats, including those
with embedded header information. Also it is a handy binary format to
exchange data between PC and UNIX/Mac machines, as well as different
languages like: C, Fortran, Matlab, etc. Especially since header files are
simple enough to edit by hand.
File type supported by most of GIS (geographic information system) software
including: ENVI software, Freelook (free file viewer by ENVI), ArcGIS, etc.
image
,
image.plot
and add.image
from
fields or plot.im
from spatstat.
ENVI files are practically C-style memory-dumps as performed by
readBin
and writeBin
functions plus separate
meta-data header file.
GIF file formats can also store 3D data (see read.gif
and
write.gif
functions).
Packages related to GIS data: shapefiles, maptools, sp,
spdep, adehabitat, GRASS, PBSmapping.
X = array(1:60, 3:5)
write.ENVI(X, "temp.nvi")
Y = read.ENVI("temp.nvi")
stopifnot(X == Y)
readLines("temp.nvi.hdr")
d = c(20,30,40)
X = array(runif(prod(d)), d)
write.ENVI(X, "temp.nvi", interleave="bil")
Y = read.ENVI("temp.nvi")
stopifnot(X == Y)
readLines("temp.nvi.hdr")
file.remove("temp.nvi")
file.remove("temp.nvi.hdr")
Run the code above in your browser using DataLab